package system

import (
	"admin.supervise.limaochuxing.top/admin/schemas/resp"

	"github.com/mojocn/base64Captcha"
)

// CaptchaService 验证码服务接口
type ICaptchaService interface {
	// Generate 生成验证码
	Generate() (*resp.CaptchaResp, error)
	// Verify 验证验证码
	Verify(id string, code string) bool
}

// captchaService 验证码服务实现
type captchaService struct {
	store base64Captcha.Store
}

// NewCaptchaService 创建验证码服务实例
func NewCaptchaService() ICaptchaService {
	return &captchaService{
		store: base64Captcha.DefaultMemStore,
	}
}

// Generate 生成验证码
func (s *captchaService) Generate() (*resp.CaptchaResp, error) {
	// 配置验证码参数
	driver := base64Captcha.NewDriverDigit(
		80,  // 高度
		240, // 宽度
		4,   // 验证码长度
		0.7, // 曲线数量
		80,  // 噪点数量
	)

	// 创建验证码
	captcha := base64Captcha.NewCaptcha(driver, s.store)
	id, b64s, _, err := captcha.Generate()
	if err != nil {
		return nil, err
	}
	return &resp.CaptchaResp{
		Id:   id,
		B64s: b64s,
	}, nil
}

// Verify 验证验证码
func (s *captchaService) Verify(id string, code string) bool {
	return s.store.Verify(id, code, true)
}
